home *** CD-ROM | disk | FTP | other *** search
/ PsL Monthly 1993 December / PSL Monthly Shareware CD-ROM (December 1993).iso / prgmming / dos / asm / pc370_3.exe / lha / DEMOSSP.ALC < prev    next >
Text File  |  1987-08-09  |  10KB  |  439 lines

  1.     TITLE 'TESTSSP - TEST SCIENTIFIC SUBROUTINE PACKAGE'
  2. *
  3. * PGM-ID. TESTSSP.ALC
  4. * AUTHOR. DON HIGGINS
  5. * DATE.   07/24/87
  6. * REMARKS. SEE SSP.ALC AND FP87.DOC FOR MORE INFORMATION.
  7. * MAINTENANCE.
  8. *
  9. * 07/24/87 COPY FROM TESTFP AND MODIFY
  10. * 07/31/87 ADD RANGE TEST OF EXP TO DETECT FRACTION SIGN BUG
  11. * 08/08/87 ADD MOD, SIN, COS, TAN USING LIBRARY FUNCTIONS 14-17
  12. * 08/09/87 ALLOW FOR R15 RETURNING 80X87 EXCEPTION BITS INCLUDING PRECISION
  13. *          ADD SIN/COS/TAN RANGE TEST -2*PI,2*PI,PI/6
  14. TESTSSP  CSECT
  15.     LA    R10,0(R15)
  16.     LA    R11,2048(R10)
  17.     LA    R11,2048(R11)
  18.     USING TESTSSP,R10
  19.     USING TESTSSP+4096,R11
  20.     LA    DE,=C'TESTSSP START$'
  21.     SVC   WTO
  22. * ALOG
  23.     LA    DE,=C'TESTSSP STARTING ALOG VALUE TESTS$'
  24.     SVC   WTO
  25.     LA    R1,FPLE2
  26.     SVC   FPSVC      FR0=LOGE(2) 80X87 CONSTANT
  27.     LER   FR2,FR0    FR2=FR0
  28.     LE    FR0,=E'2'
  29.     L     R15,=V(ALOG)
  30.     BALR  R14,R15    FR0=LOGE(2) CALC'ED
  31.     SER   FR0,FR2
  32.     LPER  FR0,FR0
  33.     CD    FR0,DERR VERFIFY RESULT WITHIN DERR
  34.     BAL   R14,CCL
  35.     LA    R1,FPLE2
  36.     SVC   FPSVC      FR0=LOGE(2) 80X87 CONSTANT
  37.     LNER  FR2,FR0
  38.     LE    FR0,=E'.5'
  39.     L     R15,=V(ALOG)
  40.     BALR  R14,R15    FR0=LOGE(2) CALC'ED
  41.     SER   FR0,FR2
  42.     LPER  FR0,FR0
  43.     CD    FR0,DERR VERFIFY RESULT WITHIN DERR
  44.     BAL   R14,CCL
  45. * ALOG10
  46.     LA    DE,=C'TESTSSP STARTING ALOG10 VALUE TESTS$'
  47.     SVC   WTO
  48.     LA    R1,FPLT2
  49.     SVC   FPSVC      FR0=LOG10(2) 80X87 CONSTANT
  50.     LER   FR2,FR0    FR2=FR0
  51.     LE    FR0,=E'2'
  52.     L     R15,=V(ALOG10)
  53.     BALR  R14,R15    FR0=LOG10(2) CALC'ED
  54.     SER   FR0,FR2
  55.     LPER  FR0,FR0
  56.     CD    FR0,DERR VERFIFY RESULT WITHIN DERR
  57.     BAL   R14,CCL
  58.     LA    R1,FPLT2
  59.     SVC   FPSVC      FR0=LOG10(2) 80X87 CONSTANT
  60.     LNER  FR2,FR0
  61.     LE    FR0,=E'.5'
  62.     L     R15,=V(ALOG10)
  63.     BALR  R14,R15    FR0=LOG10(2) CALC'ED
  64.     SER   FR0,FR2
  65.     LPER  FR0,FR0
  66.     CD    FR0,DERR VERFIFY RESULT WITHIN DERR
  67.     BAL   R14,CCL
  68. * ATAN
  69.     LA    DE,=C'TESTSSP STARTING ATAN VALUE TESTS$'
  70.     SVC   WTO
  71.     LA    R1,FPPI
  72.     SVC   FPSVC      FR0=PI
  73.     DD    FR0,=D'4'  FR0=PI/4
  74.     LER   FR2,FR0
  75.     LE    FR0,=E'1'
  76.     L     R15,=V(ATAN)
  77.     BALR  R14,R15    FR0=ATAN(1.0)=PI/4
  78.     SER   FR0,FR2
  79.     LPER  FR0,FR0
  80.     CD    FR0,DERR VERFIFY RESULT WITHIN DERR
  81.     BAL   R14,CCL
  82. * COS
  83.     LA    DE,=C'TESTSSP STARTING COS VALUE TESTS$'
  84.     SVC   WTO
  85.     SER   FR0,FR0
  86.     L     R15,=V(COS)
  87.     BALR  R14,R15    FR0=COS(0.0)=1.0
  88.     SE    FR0,=E'1'
  89.     LPER  FR0,FR0
  90.     CD    FR0,DERR VERFIFY RESULT WITHIN DERR
  91.     BAL   R14,CCL
  92.     LA    R1,FPPI
  93.     SVC   FPSVC      FR0=PI
  94.     DD    FR0,=D'4'  FR0=PI/4
  95.     L     R15,=V(COS)
  96.     BALR  R14,R15    FR0=COS(PI/4)=SQRT(2)/2.
  97.     LER   FR2,FR0
  98.     LE    FR0,=E'2'
  99.     L     R15,=V(SQRT)
  100.     BALR  R14,R15
  101.     DE    FR0,=E'2'
  102.     SER   FR0,FR2
  103.     LPER  FR0,FR0
  104.     CD    FR0,DERR VERFIFY RESULT WITHIN DERR
  105.     BAL   R14,CCL
  106.     LA    R1,FPPI
  107.     SVC   FPSVC      FR0=PI
  108.     DD    FR0,=D'2'  FR0=PI/2
  109.     L     R15,=V(COS)
  110.     BALR  R14,R15    FR0=COS(PI/2)=0.0
  111.     LPER  FR0,FR0
  112.     CD    FR0,DERR VERFIFY RESULT WITHIN DERR
  113.     BAL   R14,CCL
  114. * EXP
  115.     LA    DE,=C'TESTSSP STARTING EXP VALUE TESTS$'
  116.     SVC   WTO
  117.     LA    R1,FPLE2
  118.     SVC   FPSVC      FR0=LOGE(2) 80X87 CONSTANT
  119.     L     R15,=V(EXP)
  120.     BALR  R14,R15    FR0=E**LOGE(2)=2 CALC'ED
  121.     SE    FR0,=E'2'
  122.     LPER  FR0,FR0
  123.     CD    FR0,DERR VERFIFY RESULT WITHIN DERR
  124.     BAL   R14,CCL
  125.     LE    FR0,=E'0'
  126.     L     R15,=V(EXP)
  127.     BALR  R14,R15    FR0=E**(0) CALC'ED
  128.     SE    FR0,=E'1'
  129.     LPER  FR0,FR0
  130.     CD    FR0,DERR VERFIFY RESULT WITHIN DERR
  131.     BAL   R14,CCL
  132.     LA    R1,FPLE2
  133.     SVC   FPSVC      FR0=LOGE(2) 80X87 CONSTANT
  134.     LNER  FR0,FR0    FR0=-LOGE(2)
  135.     L     R15,=V(EXP)
  136.     BALR  R14,R15    FR0=E**(-LOGE(2)) CALC'ED
  137.     SE    FR0,=E'0.5'
  138.     LPER  FR0,FR0
  139.     CD    FR0,DERR VERFIFY RESULT WITHIN DERR
  140.     BAL   R14,CCL
  141.     LE    FR0,=E'10'
  142.     L     R15,=V(ALOG)
  143.     BALR  R14,R15    FR0=LOGE(10) CALC'ED
  144.     L     R15,=V(EXP)
  145.     BALR  R14,R15    FR0=E**(LOGE(10)) CALC'ED
  146.     SE    FR0,=E'10'
  147.     LPER  FR0,FR0
  148.     CD    FR0,DERR VERFIFY RESULT WITHIN DERR
  149.     BAL   R14,CCL
  150.     LE    FR0,=E'0.1'
  151.     L     R15,=V(ALOG)
  152.     BALR  R14,R15    FR0=LOGE(0.1) CALC'ED
  153.     L     R15,=V(EXP)
  154.     BALR  R14,R15    FR0=E**(LOGE(0.1)) CALC'ED
  155.     SE    FR0,=E'0.1'
  156.     LPER  FR0,FR0
  157.     CD    FR0,DERR VERFIFY RESULT WITHIN DERR
  158.     BAL   R14,CCL
  159. * INT
  160.     LA    DE,=C'TESTSSP STARTING INT VALUE TESTS$'
  161.     SVC   WTO
  162.     LE    FR0,=E'123.456'
  163.     L     R15,=V(INT)
  164.     BALR  R14,R15
  165.     CL    R0,=F'123'
  166.     BAL   R14,CCE
  167.     LE    FR0,=E'-123.456'
  168.     L     R15,=V(INT)
  169.     BALR  R14,R15
  170.     CL    R0,=F'-123'
  171.     BAL   R14,CCE
  172. * MOD
  173.     LA    DE,=C'TESTSSP STARTING MOD VALUE TESTS$'
  174.     SVC   WTO
  175.     LD    FR0,=D'123.456'
  176.     LD    FR2,=D'1'
  177.     L     R15,=V(MOD)
  178.     BALR  R14,R15
  179.     SD    FR0,=D'0.456'
  180.     LPER  FR0,FR0
  181.     CD    FR0,DERR
  182.     BAL   R14,CCL
  183.     LD    FR0,=D'10'
  184.     LD    FR2,=D'3'
  185.     L     R15,=V(MOD)
  186.     BALR  R14,R15
  187.     SD    FR0,=D'1'
  188.     LPER  FR0,FR0
  189.     CD    FR0,DERR
  190.     BAL   R14,CCL
  191. * REAL
  192.     LA    DE,=C'TESTSSP STARTING REAL VALUE TESTS$'
  193.     SVC   WTO
  194.     L     R0,=F'123'
  195.     L     R15,=V(REAL)
  196.     BALR  R14,R15
  197.     CE    FR0,=E'123'
  198.     BAL   R14,CCE
  199.     L     R0,=F'-123'
  200.     L     R15,=V(REAL)
  201.     BALR  R14,R15
  202.     CE    FR0,=E'-123'
  203.     BAL   R14,CCE
  204. * SIN
  205.     LA    DE,=C'TESTSSP STARTING SIN VALUE TESTS$'
  206.     SVC   WTO
  207.     SER   FR0,FR0
  208.     L     R15,=V(SIN)
  209.     BALR  R14,R15    FR0=SIN(0.0)=1.0
  210.     SE    FR0,=E'0'
  211.     LPER  FR0,FR0
  212.     CD    FR0,DERR VERFIFY RESULT WITHIN DERR
  213.     BAL   R14,CCL
  214.     LA    R1,FPPI
  215.     SVC   FPSVC      FR0=PI
  216.     DD    FR0,=D'4'  FR0=PI/4
  217.     L     R15,=V(SIN)
  218.     BALR  R14,R15    FR0=SIN(PI/4)=SQRT(2)/2.
  219.     LER   FR2,FR0
  220.     LE    FR0,=E'2'
  221.     L     R15,=V(SQRT)
  222.     BALR  R14,R15
  223.     DE    FR0,=E'2'
  224.     SER   FR0,FR2
  225.     LPER  FR0,FR0
  226.     CD    FR0,DERR VERFIFY RESULT WITHIN DERR
  227.     BAL   R14,CCL
  228.     LA    R1,FPPI
  229.     SVC   FPSVC      FR0=PI
  230.     DD    FR0,=D'2'  FR0=PI/2
  231.     L     R15,=V(SIN)
  232.     BALR  R14,R15    FR0=SIN(PI/2)=1.0
  233.     SE    FR0,=E'1'
  234.     LPER  FR0,FR0
  235.     CD    FR0,DERR VERFIFY RESULT WITHIN DERR
  236.     BAL   R14,CCL
  237. * SQRT
  238.     LA    DE,=C'TESTSSP STARTING SQRT VALUE TESTS$'
  239.     SVC   WTO
  240.     LE    FR0,=E'4'
  241.     L     R15,=V(SQRT)
  242.     BALR  R14,R15
  243.     CE    FR0,=E'2'
  244.     BAL   R14,CCE
  245.     LD    FR0,=D'2.25'
  246.     L     R15,=V(SQRT)
  247.     BALR  R14,R15
  248.     CD    FR0,=D'1.5'
  249.     BAL   R14,CCE
  250.     LD    FR0,=D'12345'
  251.     MDR   FR0,FR0
  252.     L     R15,=V(SQRT)
  253.     BALR  R14,R15
  254.     SD    FR0,=D'12345'
  255.     LPER  FR0,FR0
  256.     CD    FR0,DERR VERFIFY RESULT WITHIN DERR
  257.     BAL   R14,CCL
  258. * TAN
  259.     LA    DE,=C'TESTSSP STARTING TAN VALUE TESTS$'
  260.     SVC   WTO
  261.     SER   FR0,FR0
  262.     L     R15,=V(TAN)
  263.     BALR  R14,R15    FR0=TAN(0.0)=0.0
  264.     SE    FR0,=E'0'
  265.     LPER  FR0,FR0
  266.     CD    FR0,DERR VERFIFY RESULT WITHIN DERR
  267.     BAL   R14,CCL
  268.     LA    R1,FPPI
  269.     SVC   FPSVC      FR0=PI
  270.     DD    FR0,=D'4'  FR0=PI/4
  271.     L     R15,=V(TAN)
  272.     BALR  R14,R15    FR0=TAN(PI/4)=1.0
  273.     SE    FR0,=E'1'
  274.     LPER  FR0,FR0
  275.     CD    FR0,DERR VERFIFY RESULT WITHIN DERR
  276.     BAL   R14,CCL
  277.     LA    R1,FPPI
  278.     SVC   FPSVC      FR0=PI
  279.     DD    FR0,=D'2'  FR0=PI/2
  280.     L     R15,=V(TAN)
  281.     BALR  R14,R15    FR0=TAN(PI/2)=1.0*16**63 PLUS DIVIDE CHK ERR
  282.     LTR   R15,R15
  283.     BAL   R14,CCH    VERIFY RC>0 DUE TO EXCEPTION
  284.     STE   FR0,WE0
  285.     NI    WE0,X'7F'
  286.     CLC   WE0,=X'7F800000' ABS COMPARE WITH FP87 MAX CONSTANT
  287.     BAL   R14,CCE
  288.     LA    DE,=C'TESTSSP STARTING RANGE TESTS$'
  289.     SVC   WTO
  290. * SIN/COS/TAN RANGE TEST -2*PI,2*PI,PI/6
  291.     LA    DE,=C'TESTSSP STARTING SIN/COS RANGE TESTS$'
  292.     SVC   WTO
  293.     LA    R1,FPPI
  294.     SVC   FPSVC      FR0=PI
  295.     LDR   FR6,FR0
  296.     DD    FR6,=D'6'  FR6=PI/6   INCR ARG.
  297.     LDR   FR4,FR0
  298.     ADR   FR4,FR4    FR4=2*PI   MAX. ARG.
  299.     LNDR  FR2,FR4    FR2=-2*PI  CURRENT ARG.
  300.     LA    R2,1
  301. SLOOP    EQU   *
  302.     LER   FR0,FR2
  303.     L     R15,=V(SIN)
  304.     BALR  R14,R15    FR0=SIN(X)
  305.     STD   FR0,SAVSIN
  306.     LDR   FR0,FR2
  307.     SDR   FR0,FR6
  308.     SDR   FR0,FR6
  309.     SDR   FR0,FR6
  310.     L     R15,=V(COS)
  311.     BALR  R14,R15    FR0=COS(X-PI/2)
  312.     SD    FR0,SAVSIN
  313.     LPDR  FR0,FR0
  314.     CD    FR0,DERR VERFIFY SIN(X)=COS(X-PI/2) WITHIN DERR
  315.     BAL   R14,CCL
  316.     SP    PTAN,=P'1' DEC SKIP COUNTER
  317.     BNZ   TSTTAN
  318.     ZAP   PTAN,=P'6' RESET COUNTER  TO SKIP AGAIN AT +PI
  319.     B     SKPTAN
  320. TSTTAN   EQU   *
  321.     LER   FR0,FR2
  322.     L     R15,=V(COS)
  323.     BALR  R14,R15    FR0=COS(X)
  324.     STD   FR0,SAVCOS
  325.     LD    FR0,SAVSIN
  326.     DD    FR0,SAVCOS
  327.     STD   FR0,SAVTAN SIN(X)/COS(X)
  328.     LER   FR0,FR2
  329.     L     R15,=V(TAN)
  330.     BALR  R14,R15    FR0=TAN(X)
  331.     SD    FR0,SAVTAN
  332.     LPDR  FR0,FR0
  333.     CD    FR0,DERR VERFIFY TAN(X)=SIN(X)/COS(X) WITHIN DERR
  334.     BAL   R14,CCL
  335. SKPTAN   EQU   *           SKIP TAN TEST FOR COS(X)=